package com.casa_apoio.model.dao;

import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

public class HospedagemDAO<T> extends HibernateDAO<T> {

    public HospedagemDAO(Class<T> classe, Session session) {
        super(classe, session);
    }

    public List<T> listaHospedagem() {
        Criterion filtro = Restrictions.isNull("dataSaida");
        Criteria criterio = criaCriteria();
        List<T> lista = criterio.add(filtro).addOrder(Order.asc("leito.idLeito")).addOrder(Order.asc("dataEntrada")).addOrder(Order.asc("horaEntrada")).list();
        return lista;
    }

    public List<T> verificaHospedagemHospedeId(Integer idHospede) {       
        Criteria criterio = criaCriteria().add(Restrictions.eq("hospede.idHospede", idHospede)).add(Restrictions.isNull("dataSaida"));
        List<T> lista = criterio.list();
        return lista;
    }

    public List<T> hospedagemPorPeriodoMunicipio(Integer idCidade, Date dataInicial, Date dataFinal) {        
        Criteria criterio = criaCriteria().add(Restrictions.between("dataSaida", dataInicial, dataFinal)).add(Restrictions.eq("cidade.idCidade", idCidade));
        List<T> lista = criterio.list();
        return lista;
    }
}
